#include "guiterm.hpp"

PaletteManager *PaletteManager::instance = NULL;

QPalette *PaletteManager::terminalWindow() { init(); return instance->terminalWindowPalette; }
QPalette *PaletteManager::programView()    { init(); return instance->programViewPalette; }
QPalette *PaletteManager::activePrompt()   { init(); return instance->activePromptPalette; }
QPalette *PaletteManager::activeInput()    { init(); return instance->activeInputPalette; }
QPalette *PaletteManager::inactivePrompt() { init(); return instance->inactivePromptPalette; }
QPalette *PaletteManager::inactiveInput()  { init(); return instance->inactiveInputPalette; }
QPalette *PaletteManager::fileView()       { init(); return instance->fileViewPalette; }
QPalette *PaletteManager::errorMessage()   { init(); return instance->errorMessagePalette; }
QPalette *PaletteManager::statusMessage()  { init(); return instance->statusMessagePalette; }

void PaletteManager::init()
{
	if(!instance)
		instance = new PaletteManager();
}

PaletteManager::PaletteManager()
{
	terminalWindowPalette = new QPalette();
	terminalWindowPalette->setColor(QPalette::Window, config.backgroundColor);
	
	programViewPalette = new QPalette();
	programViewPalette->setColor(QPalette::Window, config.backgroundColor);
	programViewPalette->setColor(QPalette::Base, config.backgroundColor);
	programViewPalette->setColor(QPalette::Text, config.inputColor);
	programViewPalette->setColor(QPalette::WindowText, config.promptColor);
	
	fileViewPalette = new QPalette();
	fileViewPalette->setColor(QPalette::Window, config.backgroundColor);
	fileViewPalette->setColor(QPalette::Base, config.backgroundColor);
	fileViewPalette->setColor(QPalette::Text, config.programForeground);
	fileViewPalette->setColor(QPalette::WindowText, config.programForeground);
	
	activePromptPalette = new QPalette();
	activePromptPalette->setColor(QPalette::Window, config.backgroundColor);
	activePromptPalette->setColor(QPalette::Base, config.backgroundColor);
	activePromptPalette->setColor(QPalette::Text, config.inputColor);
	activePromptPalette->setColor(QPalette::WindowText, config.promptColor);
	
	errorMessagePalette = new QPalette();
	errorMessagePalette->setColor(QPalette::Text, config.errorColor);
	errorMessagePalette->setColor(QPalette::WindowText, config.errorColor);
	
	statusMessagePalette = new QPalette();
	statusMessagePalette->setColor(QPalette::Text, config.programForeground);
	statusMessagePalette->setColor(QPalette::WindowText, config.programForeground);
	
	activeInputPalette = activePromptPalette;
	inactivePromptPalette = activePromptPalette;
	inactiveInputPalette = activePromptPalette;
}

